﻿using System;
using System.Linq;
using SubsidiosBussinessLogic.DataAccess.Interfaces;
using SubsidiosBussinessLogic.Models;

namespace SubsidiosBussinessLogic.DataAccess.SqlServerRepository
{
    public class MontoPresupuestoRepository : Repository<MontoPresupuesto>, IMontoPresupuestoRepository
    {
        #region Miembros de IMontoPresupuesto

        public MontoPresupuestoRepository(IDataContextFactory dataContextFactory) : base(dataContextFactory)
        {
        }

        public IQueryable<MontoPresupuesto> GetMontoPresupuestos()
        {
            return All();
        }

        public MontoPresupuesto CreateMontoPresupuesto()
        {
            return CreateInstance();
        }

        public void DeleteMontoPresupuesto(MontoPresupuesto montoPresupuesto)
        {
            MarkForDeletion(montoPresupuesto);
            SaveAll();
        }

        public void SaveMontoPresupuesto()
        {
            SaveAll();
        }

        #endregion
        /// <summary>
        /// Devuelve una sola instancia del objeto que machea con el filtro
        /// </summary>
        /// <param name="exp"></param>
        /// <returns></returns>
        public MontoPresupuesto FindSingle(Func<MontoPresupuesto, bool> exp)
        {
            return Single(exp);
        }
        
        /// <summary>
        /// Devuelve todos los objetos que machean con el filtro
        /// </summary>
        /// <param name="exp"></param>
        /// <returns></returns>
        public IQueryable<MontoPresupuesto> FindWithMatch(Func<MontoPresupuesto, bool> exp)
        {
           return FindAll(exp);
        }
    }

   
}
